package me.yobol.lintcode.easy.singlenumber;

/**
 *
 * @author Yobol
 */
public class SingleNumber implements ISingleNumber{

    /*
        Principle : b ^ b = 0   a ^ 0 = a -> a == a ^ b ^ b
        原理：两个相同的数字取异或结果为0，任意数字与0取异或结果为其自身
    
        用异或操作可以消除同一集合中相同的两个数字
    */
    @Override
    public int singleNumber(int[] A) {
        if (A == null || A.length == 0) {
            return 0;
        }
        int res = A[0];
        for (int i = 1; i < A.length; i++) {
            res = res ^ A[i];
        }
        return res;
    }
    
}
